Communication networks are widely used to link various nodes, such as personal computers, servers, gateways, and the like. Communication networks may include private networks, for example, local area networks (LANs) and wide area networks (WANs), or public networks as in the Internet. Popular forms of communications across such networks include electronic mail, file transfer, web browsing, and other exchanges of data.
With the increased capacity and reliability of communications networks, transmission of real-time information, such as voice and streaming video, over networks has become possible. The ability to transfer a wide variety of information has made communication networks a popular choice of communication amongst users, as evidenced by the emergence of the Internet, for example. The popularity of networks as an attractive mode of communication has resulted in increased traffic, thereby making today's networks more prone to congestion, particularly during peak hours.
To avoid network congestion, developers routinely employ routing algorithms to determine efficient paths from source to destination nodes. Generally, routing algorithms perform two main functions—selecting routes between the source and destination nodes and delivering messages to the intended destination after the routes have been determined. The latter function of delivering messages to the intended destination involves use of data structures known as routing tables to deliver messages. The former function of selecting routes typically involves a collection of routing algorithms executing at different nodes that exchange services or perhaps information.
It is desirable that routing algorithms correctly and expeditiously determine efficient routes to transmit data. Inefficient routing may delay the delivery of data, or even cause data to be lost, which may lead to network congestion.
A need thus exists for an improved method and apparatus of routing data within a communications system.